package com.xkl.springdoc.enums;

/**
 * @Description 返回失败枚举类
 * @ClassName BaseHttpFail
 * @Author 码农小卡拉
 * @Date 2024/7/11 17:44
 **/
public interface ErrorEnum {

    /**
     * 返回码
     */
    Integer getCode();
    /**
     * 错误描述
     */
    String getMsg();

    /**
     * 将参数反序列化为枚举
     *
     * @param param 当前值
     * @param clazz 枚举类型
     */
    static <T extends Enum<T> & ErrorEnum> T parse(Integer param, Class<T> clazz) {
        if (param == null || clazz == null) {
            return null;
        }
        T[] enums = clazz.getEnumConstants();
        for (T t : enums) {
            Integer key = t.getCode();
            if (key.equals(param)) {
                return t;
            }
        }
        return null;
    }
}
